package main

import (
	"bytes"
	"fmt"
	"github.com/spf13/viper"
	"log"
)

// 从读取配置信息
// 从 io.reader 中读取信息
// viper 支持从io.reader 中读取配置信息 这种形式很宁海
// etcd consul zokkeper configmap k8s autoconfig
// ali-aws waixin jijngj juns prioxy c linux enjv init commadline
// file os net stribngs bytes buffio pipe unix linux thres conrtue
// 可以代理访问处理方式 代理访问我们的服务器信息
// 建立对应的信息 直接代理访问信息
// 也可以是程序中生成的字符串 甚至可以网络连接中读取字节流

func main() {
	viper.SetConfigType("toml")
	tomlConfig := []byte(`
app_name = "awesome web"

# possible values: DEBUG, INFO, WARNING, ERROR, FATAL
log_level = "DEBUG"

[mysql]
ip = "127.0.0.1"
port = 3306
user = "dj"
password = 123456
database = "awesome"

[redis]
ip = "127.0.0.1"
port = 7381
`)
	err := viper.ReadConfig(bytes.NewBuffer(tomlConfig))
	if err != nil {
		log.Fatal("read config failed : %v", err)
	}
	fmt.Println("redis.port: ", viper.GetInt("redis.port"))
}
